There are types of transmission errors that can occur during the data transmission, such as noise, interference, etc. Forward Error Correction (FEC) has been widely used in overcome transmission errors in digital wireless communication systems, mass digital storage systems, etc.
In a digital video broadcast (DVB) system, video source information received from an external source is transmitted from a transmitter to a receiver. Multi-protocol encapsulation forward error correction (MPE-FEC) provides an additional layer of an error correction. The MPE-FEC scheme is based on a Reed-Solomon (RS) code. In the digital video broadcast system, the contents to be transmitted and encapsulated come in the form of Internet Protocol (IP) datagrams or other network datagrams. With Multi-protocol encapsulation techniques used in data transmission, each IP datagram is encapsulated into one MPE-Application (AP) data section. The RS parity data, calculated from the MPE-AP datagrams, are encapsulated into MPE-RS data sections. By adding RS parity data information and sending this parity data in separate sections, error free datagrams can be output even under bad reception conditions. MPE-AP data and MPE-RS data sections are protected by a cyclic redundancy check (CRC) or a check sum, which reliably detects all erroneous sections. Accordingly, if the CRC check fails, the receiver may flag the erroneous sections as unreliable and allow the Reed-Solomon (RS) decoder to correct the errors in the MPE-FEC table. On the other hand, the receiver may put each correctly received section in the right place in the MPE-FEC table, provided the CRC shows that the received section is correct.
In order for a RS decoder in a receiver to correct erroneous data packets, conventionally, corresponding flags are stored in an additional memory. For example, FIGS. 1A and 1B illustrate a method of error correction of the prior art. An additional memory as shown in FIG. 1B, with the size as large as the MPE-FEC frame as illustrated in FIG. 1A, is used to store flags associated with every byte of the sections marked as reliable and unreliable. Referring to FIG. 1A, each byte of either the reliable sections 110 or the unreliable sections 120 of the MPE-FEC frame 105 is assigned a corresponding flag. These corresponding flags are all stored in an additional memory 150 with reference to FIG. 1B.
In another method as illustrated in FIG. 1C, an additional memory, which is an erasure structure list table in a receiver, is required to store the information associated with the detected erroneous sections. Referring to FIG. 1C, a column 162 of a table 160 indicates the start address of the first byte of each erroneous section and a column 164 of the table 160 denotes the byte-wise length, or size of that corresponding erroneous section. For example, a row 166 shows that an erroneous section starts from the address B16: 620 and the length of that erroneous section is 22 bytes. If the Address column 162 takes m bits, and the Size column 164 takes n bits, the total memory required for the erasure structure list table may take 64×(m+n) bits in an example that the decoder is able to correct up to 64 erasures per 255-byte.